#ifndef GAME_H
#define GAME_H 1

#include <map>
#include "actor.h"
#include "extras.h"
using std::map;

class GameInfo{
private:
	unsigned int turn_count;
	LevelType currentlevel;
	map<OptionType,bool> options;
	int recall_distance;
	bool town_alarm;
	LevelType old_level;
public:
	GameInfo();
	unsigned int Turn(){ return turn_count; }
	int CurrentLevel(){ return currentlevel; }
	bool Option(OptionType option){ return options[option]; }
	void SetDistance(int num){ recall_distance = num; } //i put these here in a hurry.
	int RecallDistance(){ return recall_distance; } //normally i'd look for a better way.
	bool Alarm(){ return town_alarm; }
	void RaiseTheAlarm(){ town_alarm = true; }
	void InitTiles();
	void InitAttacks();
	void InitActors();
	void InitItems();
	void InitPlayer();
	void GenerateLevel(LevelType type);
	int ItemNum();
	int ActorNum();
	void CreateItem();
	void CreateItem(int r,int c);
	void CreateItem(Actor* ptr);
	void SpawnMob();
	void Advance(int turn){ turn_count = turn; } //should this be unsigned? it seems to work fine so far.
	void ToggleOption(OptionType option){ options[option] = !options[option]; }
};

#endif

